package com.spark.common

import com.blankj.utilcode.util.SPUtils
import com.google.gson.Gson
import com.spark.common.model.UserModel

object Const {
    const val base_url = "http://192.168.1.111:8080/safety/"

    const val career_web_url = "http://118.190.0.100:8888/"
    /**
     * Prefix ->>>>>
     */
    const val act_prefix = "mobile/"
    // 登陆
    const val act_login = "sys/login"
    // 找回密码
    // todo param: idcard name employeeno：工号 mobile newpwd
    const val act_find_pwd = "${act_prefix}findpwd"

    // 文件(图片)上传
    const val act_upload = "${act_prefix}getUpload"
    // 删除图片
    /**
     * param: docFlag 文件标识
     *         0 删除录入源图片
     *         1 删除现场治理方案/重大隐患处理图片
     *         2 删除重大隐患资金方案文件
     *         3 删除重大隐患预案方案文件
     *         4 删除现场治理 验收方案图片 限时整改的验收文件
     *         5 删除限时整改的整改文件
     */
    const val act_del_img = "${act_prefix}deletePic"
    /**
     * 首页
     */
    // 首页选项模块
    const val act_home_opt = "${act_prefix}getIndexmodel"
    // 公告列表
    const val act_home_noticelist = "${act_prefix}noticelist"
    // 公告详情
    const val act_home_notice_detail = "${act_prefix}noticedetail"


    // 待办
    const val act_todo_task = "${act_prefix}todotask"
    // 修改用户信息
    const val act_modify_user = "${act_prefix}modifyuser"
    // 修改密码
    const val act_modify_pwd = "${act_prefix}modifypwd"
    // 任务详情
    const val act_task_detail = "${act_prefix}getStadchk"
    // 任务检查领导列表
    const val act_task_leader_list = "${act_prefix}getStadchkLeaderlist"
    // 任务检查责任人列表
    const val act_task_check_resp_list = "${act_prefix}getStadchkResponsiblelist"
    // 任务检查配合人列表
    const val act_task_check_cooper_list = "${act_prefix}getStadchkCooperatorlist"
    // 任务检查特邀人列表
    const val act_task_check_invite_list = "${act_prefix}getStadchkInvitedlist"
    // 待审核任务提交审核
    const val act_check_task_post = "${act_prefix}stdchkcheck"
    // 待接受任务提交
    const val act_accep_task_post = "${act_prefix}usertaskreceive"
    // 待检查任务提交检查结果
    const val act_task_check_submit = "${act_prefix}submitcheck"
    // 待审阅任务提交审阅
    const val act_task_appove_post = "${act_prefix}stdchkapprove"
    // 待检查条目详情
    const val act_task_check_detail = "${act_prefix}getStadchkitemtask"
    // 标准化检查的0/100hun
    const val act_stdchk_list = "${act_prefix}getStadchkNoCheckitemlist"
    // 审阅时检查详情中某一分类下的所有检查条目
    const val act_stdchk_category_list = "${act_prefix}getStadchkitemtasklist"
    // 任务追踪列表
    const val act_track_tasks = "${act_prefix}getTaskfollowList"


    /**
     * <><><> 资料
     */
    // 获取借阅清单
    const val act_get_borrow_list = "${act_prefix}getBorrowList"
    // 申请借阅
    const val act_apply_borrow = "${act_prefix}applyForborrowing"
    // 资料检索
    const val act_material_query = "${act_prefix}getEditionList"
    // 资料传输-人员列表
    const val act_trans_crew_list = "${act_prefix}getTransferpeople"
    // 资料传输-文件列表
    const val act_trans_file_list = "${act_prefix}getTransferfile"
    // 资料传输-文件传输请求
    const val act_request_files = "${act_prefix}filetransfer"
    // 资料传说-借阅申请通知
    const val act_borrow_notfiy_detail = "${act_prefix}getBorNoticeDetail"
    // 文件传输通知详情
    const val act_file_transfer_notify_detail = "${act_prefix}getFiletrainferDetail"
    // 保存文件到个人文件夹
    const val act_save_file_2_personal = "${act_prefix}saveFiletoPrivatefolder"
    // 个人资料文件夹
    const val act_personal_files = "${act_prefix}getPrivatefolder"
    // 文件夹目录列表 todo
    const val act_folders = "${act_prefix}getPrivateFolder"
    // 通知历史
    const val act_notify_history = "${act_prefix}getNoticeHistory"
    // 历史通知 -> 文件传输详情
    const val act_notify_history_file_info = "${act_prefix}getHistoryFiletrainferDetail"
    // 历史通知 -> 借阅通知
    const val act_notify_history_borrow_info = "${act_prefix}getBorNoticeDetail"
    // 消息类型列表
    // todo result: 0 -> 全部 1 -> 标准化检查 3 -> 文件借阅 4 -> 文件传输
    const val act_message_type = "${act_prefix}getMessageType"
    // 跟踪历史 -> 借阅申请
    // todo param: taskId
    const val act_track_borrow_request = "${act_prefix}getHistoryApplyList"
    // 跟踪历史 -> 列表
    const val act_track_list = "${act_prefix}getFollowhistoryList"
    // 资料检索 -> 标签列表
    const val act_tag_list = "${act_prefix}getBrands"
    // 借阅申请任务追踪详情 todo param: taskId
    const val act_borrow_track_info = "${act_prefix}getApplyfollow"
    // 借阅申请详情 todo param: taskId
    const val act_borrow_request_info = "${act_prefix}getApplyList"


    /**
     * <><><> 隐患
     */

    /**
     * 隐患处理类型
     */
    // 来自处理隐患
    const val htTypeProcess = 0
    // 来自待办
    const val htTypeAgency = 1
    // 来自历史
    const val htTypeHistory = 2

    // [handle] -> 考核标准筛选
    const val act_chk_std_selector = "${act_prefix}getSelectClause"
    // 隐患标准筛选
    const val act_ht_std_selector = "${act_prefix}getSelectSource"
    // [handle] -> 考核标准筛选-关键字
    const val act_chk_std_keyword = "${act_prefix}getKeysWords"
    // [handle] -> 考核标准筛选-目录
    const val act_chk_std_dir = "${act_prefix}getFolders"
    // 录入隐患->提交隐患记录
    const val act_sumit_troblue = "${act_prefix}saveTrouble"
    // 处理隐患-隐患列表
    const val act_ht_list = "${act_prefix}getSourceList"
    // [handle] -> 现场治理 -> submit -> 审核驳回重新治理/方案
    const val act_submit_spot_handle = "${act_prefix}getSelectMethod"
    // [handle] -> 现场治理 -> 选择责任单位
    const val act_select_responsible_unit = "${act_prefix}getSelectDepartment"
    // [handle] -> 现场治理 -> 选择隐患等级
    const val act_select_ht_level = "${act_prefix}getTroubleLevel"
    // [handle] -> 隐患处理记录/排查记录
    const val act_trouble_shoot_records = "${act_prefix}getClauseList"
    // 隐患历史
    const val act_ht_history = "${act_prefix}getTroublehistory"
    // [handle] -> 限时整改/挂牌督办 -> submit -> 方案
    const val act_limit_supervisor = "${act_prefix}getSelectLimitTime"
    // [handle] -> 隐患升级 -> 审核人
    const val act_upgrade_chk_man = "${act_prefix}getFatalApprove"
    // [handle] -> 现场治理 -> 审核中
    const val act_spot_handle_chking = "${act_prefix}getCurrApprove"
    // [handle] -> 现场治理/限时整改/挂牌督办/重大隐患 -> 现场情况
    const val act_spot_info = "${act_prefix}getCurrSituation"
    // 审核驳回
    const val act_chk_be_reject = "${act_prefix}limitRefuse"
    // 录入隐患-获取历史隐患位置
    const val act_fetch_history_location = "${act_prefix}selectLocation"
    // [handle] -> 现场治理/重大隐患 -> submit -> 待存储
    const val act_to_save = "${act_prefix}saveTypeButton"
    // [handle] -> 现场治理 -> 待存储信息
    const val act_spot_handle_to_save = "${act_prefix}saveType"
    // [handle] -> 限时整改/挂牌督办 -> submit -> 待存储
    const val act_limit_supervisory_to_save = "${act_prefix}getSaveTypeButton"
    // [handle] -> 限时整改 -> fetch -> 整改超时
    // todo param: taskId
    const val act_limit_fetch_handle_outtime = "${act_prefix}getOutTime"
    // [handle] -> 现场治理 -> 重新治理
    const val act_ht_rehandle = "${act_prefix}refuseApprove"
    // [待办]    限时整改/挂牌督办 -> 整改
    const val act_agency_fetch_limit_supervisor_rectify = "${act_prefix}getTODORectifyIng"
    // [待办]    限时整改/挂牌督办 -> 待存储
    const val act_agency_limit_supervisor_to_save = "${act_prefix}getTODOTaskSave"
    // [待办] -> 限时整改/挂牌督办 -> 待整改
    const val act_agency_limit_supervisor_to_rectify = "${act_prefix}getTODORectify"
    // [待办] -> 限时整改/挂牌督办 -> subit -> 待审核/待确认
    const val act_agency_limit_supervisor_submit_verify_confirm = "${act_prefix}getTODOLimitButton"
    // [待办] -> 限时整改/挂牌督办 -> fetch -> 待审核/待确认
    const val act_agency_limit_supervisor_fetch_verify_confirm = "${act_prefix}getTODOLimit"
    // [待办] -> 限时整改/挂牌督办 -> submit -> 验收驳回-重新整改
    // todo param: taskId approveRemark
    const val act_agency_limit_supervisor_submit_rehandle_after_reject = "${act_prefix}getAcceptRefuseButtonState"
    // [待办] -> 限时整改/挂牌督办 -> fetch -> 验收驳回
    // todo param: taskId
    const val act_agency_limit_supervisor_fetch_after_reject = "${act_prefix}getAcceptRefuseButton"
    // [待办] -> 限时整改/挂牌督办 -> fetch -> 验收驳回
    // todo param: taskId
    const val act_agency_limit_supervisor_fetch_after_rejectv2 = "${act_prefix}getAcceptRefuse"
    // [待办] -> 现场治理/限时整改/挂牌督办/重大隐患 -> submit -> 待审核/待确认/隐患升级 -> 驳回
    const val act_agency_alltask_submit_reject2_verify_confirm = "${act_prefix}getTODOCurrRefuseButton"
    // [待办] -> 现场治理 -> submit  -> 待审核
    const val act_agency_spot_submit_verify = "${act_prefix}getTODOCurrButton"
    // [待办] -> 现场治理 -> fetch  -> 待审核
    const val act_agency_spot_fetch_verify = "${act_prefix}getTODOCurr"
    // [待办] -> 限时整改/挂牌督办 -> submit -> 整改验收驳回
    const val act_agency_limit_supervisor_submit_rehandle_verify_reject = "${act_prefix}getTODOAcceptRefuseButton"
    // [待办] -> 限时整改/挂牌督办 -> submit -> 整改验收通过
    const val act_agency_limit_supervisor_submit_rehandle_verify_accept = "${act_prefix}getTODOAcceptContentButton"
    // [待办] -> 限时整改/挂牌督办 -> fetch -> 整改验收 todo
    const val act_agency_limit_supervisor_fetch_rehadle_verify = "${act_prefix}getTODOAccept"
    // [待办] -> 重大隐患(隐患升级) -> fetch -> 待审核 todo param: taskId
    const val act_agencty_major_fetch_verify = "${act_prefix}getFatalinfo"
    // [待办] -> 重大隐患（隐患升级） -> submit -> 待审核
    const val act_agency_major_submit_verify = "${act_prefix}getFatalPassButton"
    // [handle] -> 重大隐患(隐患升级) -> submit -> dispatch
    const val act_major_upgrade_submit = "${act_prefix}getFatalTrouble"
    // [handle] -> 重大隐患 -> submit -> 通过
    const val act_major_accept = "${act_prefix}getFatalInfoButton"
    // [handle] -> 重大隐患 -> fetch -> 待审核/待存储
    const val act_major_fetch_verify_save = "${act_prefix}getFatalInfo"
    // [handle] -> 挂牌督办 -> fetch
    const val act_supervisor_fetch = "${act_prefix}getFatalConfirm"
    // 添加隐患源关键词 todo
    const val act_ht_keywords = "${act_prefix}getSourcekwyWords"
    // [handle] -> 处理列表 -fetch
    const val act_handle__fetch_ht_list = "${act_prefix}getSourceList"
    // [handle] -> 隐患源目录 -> fetch
    const val act_handle_fetch_ht_source_folders = "${act_prefix}getSourceFolders"
    // [handle] -> 筛选隐患源 -> submit
    // todo param: sourceFolderId sourcekeyword sourceDescSearch
    const val act_handle_submit_ht_source = "${act_prefix}getSelectSource"
    // [handle] 录入任务草稿 -> dispatch
    const val act_dispatch_draft = "${act_prefix}OperationDraft"
    /**
     * <><><> 检查
     */
    // 检查->领导审核
    const val act_chk_leader_audit = "${act_prefix}stdchkcheck"
    // 检查->领导审阅
    const val act_chk_leader_chk_approve = "${act_prefix}stdchkapprove"
    // 根据taskid查询标准化检查的0分项目/满分项目/正常项目
    // todo  param: taskid type
    const val act_filter_task = "${act_prefix}getStdchkNoCheckTaskitemlist"
    // 根据categoryId，taskid查询已发起的某类标准化检查条目
    // todo param: taskid categoryid
    const val act_filter_task_items = "${act_prefix}getStadchkitemtasklist"
    // 根据taskid查询已发起的某项标准化检查条目
    // todo param: taskid
    const val act_task_item_detail = "${act_prefix}getStadchkitemtask"
    // 根据taskid查询标准化检查的任务责任人列表
    // todo param: taskid
    const val act_task_resp_man = "${act_prefix}getStadchkResponsiblelist"
    // 根据taskid查询标准化检查的领导信息（审核领导，内网特邀，外网特邀）
    // todo param: taskid
    const val act_task_stdchk_leaders = "${act_prefix}getStadchkLeaderlist"
    // 根据taskid查询标准化检查的任务特邀人员列表
    // todo param: taskid
    const val act_task_stdchk_inviters = "${act_prefix}getStadchkInvitedlist"
    // 根据taskid查询标准化检查的任务配合人列表
    // todo param: taskid0
    const val act_task_cooperators = "${act_prefix}getStadchkCooperatorlist"
    // 根据taskid查询已发起的标准化检查
    // todo param: taskid
    const val act_stdchk = "${act_prefix}getStadchk"

    /**
     * <><><> 消息
     */
    const val act_message_list = "${act_prefix}getMessageList"

    /**
     * <><><> 纠违
     */
    // 纠违历史列表
    const val act_rectify_history_list = "${act_prefix}disobeyhistorylist"
    // 选择不安全行为 -> 责任人 责任单位
    const val act_rectify_unsafe_action_resp_man = "${act_prefix}disobeyDepartmentlist"

    /**
     * query key
     */
    /**
     * <><><> 参数
     */
    const val qr_username = "username"
    const val qr_password = "password"
    const val qr_mobile = "mobile"

    const val qr_idcard = "idcard"
    const val qr_name = "name"
    const val qr_employeeno = "employeeno"
    const val qr_newpwd = "newpwd"
    const val qr_page = "page"
    const val qr_pageSize = "pageSize"
    const val qr_jsonStr = "jsonStr"
    const val qr_taskid = "taskid"
    const val qr_status = "status"
    const val qr_type = "type"
    const val qr_editionId = "editionId"
    const val qr_borrowDay = "borrowDay"
    const val qr_borrowRemark = "borrowRemark"
    const val qr_taskType = "taskType"
    const val qr_state = "state"
    const val qr_pageNum = "pageNum"
    // 文件是否授权：1->授权文件,2->未授权文件
    const val qr_scopeContentId = "scopeContentId"
    // 关键词
    const val qr_keyswords = "keyswords"
    // 标签
    const val qr_brands = "brands"
    // startTime
    const val qr_startTime = "startTime"
    // endTime
    const val qr_endTime = "endTime"
    // 资料传送人员名称
    const val qr_transferUser = "transferUser"
    // 资料传送人员工号
    const val qr_transferemplyeeno = "transferemplyeeno"
    // 接受文件人id
    const val qr_accept_file_userid = "userIdstr"
    // 文件id
    const val qr_fileId = "fileId"
    // 备注说明
    const val qr_remark = "remark"
    // taskId
    const val qr_taskId = "taskId"
    // messageType
    const val qr_messageType = "messageType"
    // keywords
    const val qr_keyWords = "keyWords"
    // privatefolderId
    const val qr_privatefolderId = "privatefolderId"
    // isRead 通知是否已读
    const val qr_isRead = "isRead"


    const val categoryid = "categoryid"
    // sp qr_name
    const val sp_user = "user"
    const val user = "user"
    const val tag_token = "safety.session.id"
    const val isOnline = "isonline"

    const val tag_index = "index"
    const val tag_type = "type"
    /**
     * 获取 token
     */
    fun token(): String? {
        return SPUtils.getInstance(sp_user).getString(tag_token)
    }

    /**
     * remove the token config
     */
    fun delToken() {
        SPUtils.getInstance(sp_user).remove(tag_token)
        SPUtils.getInstance(sp_user).put(isOnline, false)
    }

    fun saveUser(userStr: String) {
        SPUtils.getInstance(sp_user).put(user, userStr)
        SPUtils.getInstance(sp_user).put(isOnline, true)
    }

    /**
     * remove the user config
     */
    fun delUser() {
        SPUtils.getInstance(sp_user).remove(user)
        delToken()
    }

    fun saveToken(token: String?) {
        if (!token.isNullOrBlank())
            SPUtils.getInstance(sp_user).put(tag_token, token!!)
        SPUtils.getInstance(sp_user).put(isOnline, !token.isNullOrBlank())
    }

    fun getUser(): UserModel? {
        val userStr = SPUtils.getInstance(sp_user).getString(user)
        try {
            return Gson().fromJson(userStr, UserModel::class.java)
        } catch (e: Exception) {
            e.printStackTrace()
        }
        return null
    }

    /**
     * 是否已经登录
     */
    fun isLogined(): Boolean {
        return !token().isNullOrBlank()
    }

    /**
     * 限时整改/
     */
    fun genSerialNum(): String {
        return "${fake() + fake()}-${fake()}-${fake()}-${fake()}"
    }

    private fun fake(): String {
        return Integer.toHexString(((Math.random() + 1) * 0x10000).toInt()).substring(1)
    }
}

